1. Field of the Invention
The present invention relates to integrated circuits, and more specifically to a method and apparatus for reducing fuse programming time for non-volatile storage of data in an integrated circuit.
2. Related Art
Integrated circuits often store data (xe2x80x9cnon-volatile dataxe2x80x9d) in a non-volatile manner. Data stored in non-volatile manner generally continues existence on an integrated circuit even when the integrated circuit (storing the data) is powered off and turned on again.
One problem often encountered with such storage in integrated circuits is that the data value may not be known prior to completion of manufacturing of an integrated circuit. For example, in an approach often known as trimming, a desired impedance value is attained by using multiple parallel impedances, and turning on/off only some of the impedances. Trimming may be necessary, for example, because attaining precise desired impedance value is often not practicable due to process variations or imprecision of manufacturing technologies.
Turning on/off of each impedance may be controlled by a bit, and the bits together form non-volatile data. The specific impedances to turn on/off are generally known only after measurements are made on the manufactured integrated circuits. Accordingly, a desired value for the non-volatile data (which controls the specific impedances turned on or off) to be stored may be known only after completion of manufacturing.
One approach often used in such situations is to use a fuse circuit associated with (or to generate) each bit (non-volatile bit). In general, a fuse circuit generates one logical value if blown-off, and the other logical value otherwise. The output values generated by many such fuses form the desired non-volatile data. The blowing-off of fuses may be referred to as fuse programming.
Thus, in the above trimming example, the fuse circuits corresponding to bits providing one logical value may be blown off. Accordingly, the specific impedances turned on/off many be controlled after manufacturing of integrated circuits is complete by appropriate fuse programming.
In general, it is desirable to reduce the amount of time required for fuse programming, for example, to reduce the cost associated with blowing fuse circuits.
The present invention reduces the amount of time required for fuse programming when implementing a non-volatile data storage. In an embodiment, fuse circuits generating corresponding outputs are provided. Each fuse circuit is associated with a corresponding bit position of a desired value. A first count and a second count respectively representing the number of logical ones and zeros in the desired value are generated.
According to an aspect of the present invention, a set of fuse circuits at bit positions equaling the logical value with a smaller one of the two counts are blown. The outputs of the fuse circuits are inverted if the blown set of fuse circuits are designed to generate the logical value associated with the larger one of the two counts after being blown.
As a result, no more than half of the fuse circuits may need to be blown for any desired value to be implemented in a non-volatile data storage.
In an embodiment, the inversion of the outputs of fuse circuits is implemented using another fuse and XOR gates. Each XOR gate accepts one of the fuse circuit outputs and the output of the another fuse circuit (XOR fuse circuit). The XOR fuse circuit is implemented to generate a 1 if the blown fuses are designed to generate a logical value associated with the larger one of the two counts. As a result, each XOR gate inverts the corresponding fuse circuit output.
Further features and advantages of the invention, as well as the structure and operation of various embodiments of the invention, are described in detail below with reference to the accompanying drawings. In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit(s) in the corresponding reference number.